#pragma 

#include "Solver.h"
#include <stack>

class IDFSSolver : public Solver
{
private:
	std::stack<Node *> stack;
	std::vector<Node *> visited;
	int levelMax = 0;
	Node *parent;
public:
	IDFSSolver(Node * node=NULL);
	void solve(std::string order, std::string id_heuristic="");
	void getNode();
	void firstPush();
	bool checkVisited();
	void createChildren(std::string *order);
	void pushChildren();
	~IDFSSolver();
};